﻿/**
* Скрипт отображающий статистическую информацию
*/
var container = Ext.getCmp(sectionId);
Ext.onReady(function () {
    var newsGrid = {
        xtype: 'grid',
        frame: true,
        store: new Ext.data.JsonStore({
            root: 'data',
            idProperty: 'id',
            storeId: 'newsStore',
            fields: [
                'id',
                'tags',
                'title',
                'shortContent',
                'fullContent',
                'views',
                'published',
                'delayPublication',
                'delayPublicationDate',
                'disableCommenting',
                'dateCreated',
                'dateModified'
            ]
        }),
        height: 400,
        autoExpandColumn: 'newsTitleColumn',
        id: 'newsGrid',
        selModel: new Ext.grid.RowSelectionModel({

        }),
        colModel: new Ext.grid.ColumnModel({
            columns: [
                {
                    header: 'ИД',
                    dataIndex: 'id',
                    sortable: true,
                    width: 50,
                    align: 'left',
                    id: 'newsIdColumn'
                },
                {
                    header: 'Заголовок',
                    dataIndex: 'title',
                    sortable: true,
                    width: 120,
                    align: 'left',
                    id: 'newsTitleColumn'
                },
                {
                    header: 'Просмотров',
                    dataIndex: 'views',
                    sortable: true,
                    width: 80,
                    align: 'left',
                    id: 'newsViewsColumn'
                },
                {
                    header: 'Дата создания',
                    dataIndex: 'dateCreated',
                    sortable: true,
                    width: 120,
                    align: 'left',
                    id: 'newsDateCreatedColumn'
                },
                {
                    header: 'Дата модификации',
                    dataIndex: 'dateModified',
                    sortable: true,
                    width: 120,
                    align: 'left',
                    id: 'newsDateModifiedColumn'                    
                }

            ]
        }),
        tbar: [
            {
                text: 'Обновить список',
                handler: function() {
                    reloadNews();
                }
            },
            '-',
            {
                text: 'Добавить',
                tooltip: 'Отображает диалог добавления новости',
                handler: function(){
                    showNewsDialog();
                }
            },
            {
                text: 'Редактировать',
                tooltip: 'Отображает диалог редактирования выбранной новости',
                handler: function(){
                    var selected = Ext.getCmp('newsGrid').getSelectionModel().getSelected();
                    if (selected != null){
                        showNewsDialog(selected);
                    }
                }
            },
            {
                text: 'Удалить',
                tooltip: 'Удаляет выбранную новость',
                handler: function(){
                    var selectedRecord = Ext.getCmp('newsGrid').getSelectionModel().getSelected();
                    if (selectedRecord == null){
                        return;
                    }
                    Ext.Msg.show({
                        title: 'Удаление новости',
                        msg: 'Вы действительно хотите удалить выбранную новость?',
                        buttons: Ext.Msg.YESNO,
                        icon: Ext.Msg.QUESTION,
                        fn: function(txt){
                            if (txt == "yes"){
                                var id = selectedRecord.data.id;
                                global.Ajax({
                                    url: '/ControlPanel/ManageNews/Delete',
                                    maskEl: Ext.getCmp('newsGrid'),
                                    maskMsg: 'Идет удаление новости',
                                    success: function(data){
                                        reloadNews();
                                    }
                                });
                            }
                        }
                    });
                }
            }
        ],
        listeners: {
            rowdblclick: function(number,e){
                var selected = Ext.getCmp('newsGrid').getSelectionModel().getSelected();
                if (selected != null){
                    showNewsDialog(selected);
                }
            }
        }
    };

container.add(newsGrid);
container.doLayout();


    /**
     * Перезагружает список новостей с сервера
     */
    function reloadNews(){
        global.Ajax({
            url: '/ControlPanel/ManageNews/GetNews',
            maskEl: Ext.getCmp('newsGrid'),
            maskMsg: 'Идет загрузка списка новостей',
            success: function(data){
                Ext.getCmp('newsGrid').getStore().loadData(data);
            }
        });
    }
    reloadNews();

    /**
     * Отображает диалог создания или редактирования новости
     * @param news - новость для редактирования
     */
    function showNewsDialog(news){
        var wnd = new Ext.Window({
            title: news != undefined ? "Редактирование новости "+news.data.title : "Создание новости",
            resizable: true,
            width: 450,
            height: 600,
            items: [
                {
                    xtype: 'form',
                    bodyStyle: 'padding: 5px',
                    id: 'newsForm',
                    labelAlign: 'top',
                    items: [
                        {
                            xtype: 'hidden',
                            id: 'newsIdField',
                            value: news != undefined ? news.data.id : -1
                        },
                        {
                            xtype: 'textfield',
                            allowBlank: false,
                            fieldLabel: 'Заголовок',
                            id: 'newsTitleField',
                            anchor: '100%',
                            value: news != undefined ? news.data.title : ""
                        },
                        {
                            xtype: 'textfield',
                            allowBlank: false,
                            fieldLabel: 'Ключевые слова (через запятую)',
                            id: 'newsTagsField',
                            anchor: '100%',
                            value: news != undefined ? news.data.tags : ""
                        },
                        {
                            xtype: 'textarea',
                            allowBlank: false,
                            fieldLabel: 'Краткая аннотация (HTML разрешен)',
                            id: 'newsShortContentField',
                            height: 120,
                            anchor: '100%',
                            value: news != undefined ? news.data.shortContent : ""
                        },
                        {
                            xtype: 'textarea',
                            allowBlank: false,
                            fieldLabel: 'Полная аннотация (HTML разрешен)',
                            id: 'newsFullContentField',
                            height: 150,
                            anchor: '100%',
                            value: news != undefined ? news.data.fullContent : ""
                        },
                        {
                            xtype: 'compositefield',
                            anchor: '100%',
                            hideLabel: true,
                            items: [
                                {
                                    xtype: 'checkbox',
                                    hideLabel: true,
                                    boxLabel: 'Опубликована',
                                    checked: news != undefined ? news.data.published : true,
                                    id: 'newsPublishedField',
                                    flex: 1
                                },
                                {
                                    xtype: 'checkbox',
                                    hideLabel: true,
                                    boxLabel: 'Отложенная публикация',
                                    checked: news != undefined ? news.data.delayPublication : false,
                                    id: 'newsDelayPublicationField',
                                    flex: 1
                                },
                                {
                                    xtype: 'checkbox',
                                    hideLabel: true,
                                    boxLabel: 'Отключить комментирование',
                                    checked: news != undefined ? news.data.disableCommenting : false,
                                    id: 'newsDisableCommentingField',
                                    width: 150
                                }
                            ]
                        },
                        {
                            xtype: 'datefield',
                            fieldLabel: 'Дата отложенной публикации',
                            format: 'd.m.Y',
                            id: 'newsDelayPublicationDateField',
                            allowBlank: true,
                            anchor: '100%',
                            value: news != undefined ? news.data.delayPublicationDate : null
                        }
                    ]
                }
            ],
            buttons: [
                {
                    text: 'Сохранить',
                    handler: function(){
                        // Валидируем
                        if (!Ext.getCmp('newsForm').getForm().isValid()){
                            Ext.Msg.alert('Ошибка','Пожалуйста, правильно заполните все поля формы');
                            return;
                        }

                        // Подготавливаем
                        var params = {
                            id: Ext.getCmp('newsIdField').getValue(),
                            title: Ext.getCmp('newsTitleField').getValue(),
                            tags: Ext.getCmp('newsTagsField').getValue(),
                            shortContent: Ext.getCmp('newsShortContentField').getValue(),
                            fullContent: Ext.getCmp('newsFullContentField').getValue(),
                            published: Ext.getCmp('newsPublishedField').getValue(),
                            delayPublication: Ext.getCmp('newsDelayPublicationField').getValue(),
                            disableCommenting: Ext.getCmp('newsDisableCommentingField').getValue(),
                            delayPublicationDate: Ext.getCmp('newsDelayPublicationDateField').getValue()
                        };

                        // Отправляем
                        global.Ajax({
                            url: '/ControlPanel/ManageNews/Save',
                            params: params,
                            maskEl: Ext.getCmp('newsGrid'),
                            maskMsg: 'Идет сохранение новости',
                            success: function(data){
                                wnd.close();
                                reloadNews();
                            }
                        });
                    }
                },
                {
                    text: 'Закрыть',
                    handler: function(){
                        wnd.close();
                    }
                }
            ]
        });
        wnd.show();
    }

});